home *** CD-ROM | disk | FTP | other *** search
/ PC User 2002 April / Disc 2 / PCUSER0402D2.iso / software / online / files / musirc.exe / Main / MultiNet < prev    next >
Encoding:
Text File  |  2002-01-23  |  12.4 KB  |  411 lines

  1. menu channel,menubar {
  2.   Multiple Server Connect Addon
  3.   .Set New Nickname:/set %irc2.nick $$?"Enter Your New Nickname"  .-
  4.   .Select New IRC2 Connection:/sockopen irc $$?"Server" $$?"Port"
  5.  
  6. }
  7. on 1:CLOSE:@Irc2:{
  8.   sockclose irc
  9.   set %close.x 1
  10.   :loop
  11.   set %cur.win $window(@#*,%close.x)
  12.   if %cur.win == $null { goto privwins }
  13.   window -c $window(@#*,%close.x)
  14.   inc %close.x
  15.   goto loop
  16.   :privwins
  17.   set %close.x 1
  18.   :loop1
  19.   if $window(@C*,%close.x) == $null { goto end }
  20.   window -c $window(@C*,%close.x)
  21.   inc %close.x
  22.   goto loop1
  23.   :end
  24.   echo -s Disconnecting from Irc Server 2!
  25. }
  26. on 1:CLOSE:@#*:{
  27.   set %target $target
  28.   set %target $remove(%target,@)
  29.   sockwrite -n irc PART %target
  30. }
  31. on 1:input:@#*:{
  32.   if $1 == /me { goto action }
  33.   if $left($1,1) == / {
  34.     irccommand $1-
  35.   }
  36.   set %talk.chan $active
  37.   set %talk.chan $remove(%talk.chan,@)
  38.   sockwrite -n irc privmsg %talk.chan : $+ $1-
  39.   aline -p $active $timestamp < $+ %irc2.nick $+ > $1-
  40.   halt
  41.   :action
  42.   set %talk.chan $active
  43.   set %talk.chan $remove(%talk.chan,@)
  44.   sockwrite -n irc privmsg %talk.chan : $+ $chr(1) $+ ACTION $2- $+ $chr(1)
  45. aline -p $active 12 $+ $timestamp * %irc2.nick $2-
  46. halt
  47. }
  48. on 1:input:@Irc2:{
  49.   if $left($1,1) == / {
  50.     irccommand $1-
  51.   }
  52.   aline @Irc2 3*** Please Dont Talk in the status Window
  53.   aline @Irc2 12-
  54.   halt
  55. }
  56. on 1:sockopen:irc:{
  57.   if $sockerr > 0 {
  58.     halt
  59.   }
  60.   sockwrite -n irc user $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z)
  61.   sockwrite -n irc nick %irc2.nick
  62.   window -e @Irc2
  63. }
  64. alias irccommand {
  65.   set %prefix $1
  66.   if %prefix == /nick {
  67.     set %irc2.nick $2-
  68.   }
  69.   if %prefix == /msg {
  70.     sockwrite -n irc privmsg $2 : $+ $3-
  71.     halt
  72.   }
  73.   set %prefix $remove(%prefix,/)
  74.   sockwrite -n irc %prefix $2 : $+ $3-
  75.   halt
  76. }
  77. alias ircchanmode {
  78.   set %source $gettok(%var,1,32)
  79.   set %source $left(%source,$pos(%source,!,1))
  80.   set %source $remove(%source,!,:)
  81.   set %mode $gettok(%var,4,32)
  82.   set %tmode $gettok(%var,5,32)
  83.   aline -p @ $+ $gettok(%var,3,32) 3 $+ $timestamp *** %source Sets Mode %mode %tmode
  84.   set %chan $gettok(%var,3,32)
  85.   set %wind.chan @ $+ %chan
  86.   set %person.nick %tmode
  87.   set %person.nick1 * $+ %tmode
  88.   if %mode == +o {
  89.     rline -l %wind.chan $fline(%wind.chan,%person.nick1,1,1) @ $+ %person.nick
  90.   }
  91.   if %mode == -o {
  92.     rline -l %wind.chan $fline(%wind.chan,%person.nick1,1,1) %person.nick
  93.   }
  94.   if %mode == +v {
  95.     rline -l %wind.chan $fline(%wind.chan,%person.nick1,1,1) + $+ %person.nick
  96.   }
  97.   if %mode == -v {
  98.     rline -l %wind.chan $fline(%wind.chan,%person.nick1,1,1) %person.nick
  99.   }
  100. }
  101. on 1:sockread:irc:{
  102.   sockread %var
  103.   set %server.name $gettok(%var,1,32)
  104.   set %server.name $remove(%server.name,:)
  105.   if QUIT == $gettok(%var,2,32) {
  106.     quitirc
  107.   }
  108.   if PING == $gettok(%var,1,32) {
  109.     set %2 $gettok(%var,2,32)
  110.     sockwrite -n irc pong %2
  111.     aline @Irc2 3PING? PONG!
  112.     aline @Irc2 12-
  113.     halt
  114.   }
  115.   if JOIN == $gettok(%var,2,32)  {
  116.     set %irc2.chan $gettok(%var,3,32)
  117.     set %irc2.chan $remove(%irc2.chan,:)
  118.     ircjoinchan %irc2.chan
  119.   }
  120.   if KICK == $gettok(%var,2,32) {
  121.     irckick
  122.   }
  123.   if 0 isin $gettok(%var,2,32) || 1 isin $gettok(%var,2,32) || 2 isin $gettok(%var,2,32) || 3 isin $gettok(%var,2,32) || 4 isin $gettok(%var,3,32) || 5 isin $gettok(%var,2,32) || 6 isin $gettok(%var,2,32) || 7 isin $gettok(%var,2,32) || 8 isin $gettok(%var,2,32) || 9 isin $gettok(%var,2,32) {
  124.     rawcommand
  125.   }
  126.   if PART == $gettok(%var,2,32) {
  127.     ircpart
  128.   }
  129.   if NICK == $gettok(%var,2,32) {
  130.     ircnick
  131.   }
  132.   if MODE == $gettok(%var,2,32) {
  133.     if $chr(35) == $left($gettok(%var,3,32),1) {
  134.       ircchanmode
  135.     }
  136.     if $chr(35) != $left($gettok(%var,3,32),1) {
  137.       set %mode $gettok(%var,4,32)
  138.       set %mode $remove(%mode,:)
  139.       echo @Irc2 3 $+ *** %irc2.nick Sets Mode %mode
  140.     }
  141.     halt
  142.   }
  143.   if PRIVMSG == $gettok(%var,2,32) {
  144.     ircchanmsg %var
  145.   }
  146.   if NOTICE AUTH == $gettok(%var,2-3,32) {
  147.     connectnotice
  148.   }
  149.   if TOPIC == $gettok(%var,2,32) {
  150.     set %nick.topic $gettok(%var,1,32)
  151.     set %nick.topic $left(%nick.topic,$pos(%nick.topic,!,1))
  152.     set %nick.topic $remove(%nick.topic,:,!)
  153.     set %new.topic $gettok(%var,4-1000,32)
  154.     set %new.topic $right(%new.topic,$calc($len(%new.topic) - 1))
  155.     aline -p @ $+ $gettok(%var,3,32) 3 $+ $timestamp *** %nick.Topic Changes Topic To ' $+ %new.topic $+ '
  156.     halt
  157.   }
  158.   if NOTICE == $gettok(%var,2,32) {
  159.     set %say.not $gettok(%var,4-1000,32)
  160.     set %nick.not $gettok(%var,1,32)
  161.     set %nick.not $left(%nick.not,$pos(%nick.not,!,1))
  162.     set %nick.not $remove(%nick.not,!,:)
  163.     aline -p @Irc2 5 $+ $timestamp *** - $+ %nick.not $+ - %say.not
  164.     aline @Irc2 12-
  165.     halt
  166.   }
  167.   if %var == $null { aline @Irc2 12- | halt }
  168.   aline @Irc2 %var
  169.   aline @Irc2 12-
  170.   :end
  171.   halt
  172. }
  173. alias quitirc {
  174.   set %win.x 1
  175.   set %quit.reason $gettok(%var,3-1000,32)
  176.   set %quit.reason $right(%quit.reason,$calc($len(%quit.reason) - 1))
  177.   set %quit.nick $gettok(%var,1,32)
  178.   set %quit.host %quit.nick
  179.   set %quit.nick $left(%quit.nick,$pos(%quit.nick,!,1))
  180.   set %quit.nick $remove(%quit.nick,!,:)
  181.   set %quit.host $right(%quit.host,$calc($len(%quit.host) - 1))
  182.   set %person.nick1 * $+ %quit.nick
  183.   set %person.nick1 $remove(%person.nick1,:)
  184.   :loop
  185.   set %wind.chan $window(@*,%win.x)
  186.   if $window(@*,%win.x) == $null { 
  187.     halt
  188.   }
  189.   aline -p $window(@*,%win.x)  2 $+ $timestamp *** Quits: %quit.nick ( $+ %quit.host $+ ) Has quit IRC: ( $+ %quit.reason $+ )
  190.   if $window(@*,%win.x) == @Irc2 {
  191.     aline @Irc2 12-
  192.  
  193.   }
  194.   set %nick.line $fline(%wind.chan,%person.nick1,1,1)
  195.   if %nick.line != $null {
  196.     dline -l %wind.chan %nick.line
  197.   }
  198.   inc %win.x
  199.   goto loop
  200.   :end
  201.   halt
  202. }
  203. alias ircnick {
  204.   set %win.x 1
  205.   set %person.nick $gettok(%var,1,32)
  206.   set %person.nick $left(%person.nick,$pos(%person.nick,!,1))
  207.   set %person.nick $remove(%person.nick,!,:)
  208.   set %newnick $gettok(%var,3,32)
  209.   set %newnick $remove(%newnick,:)
  210.   :loop
  211.   set %win.nick $window(@*,%win.x)
  212.   if %win.nick == $null { goto end }
  213.   if %win.nick != @Irc2 {
  214.     set %person.nick3 * $+ %person.nick
  215.     set %line.nick $fline(%win.nick,%person.nick3,1,1)
  216.     if %line.nick != $null {
  217.       aline -p %win.nick 3 $+ $timestamp *** %person.nick Is Now Known as %newnick
  218.       rline -l %win.nick %line.nick %newnick
  219.     }
  220.   }
  221.   inc %win.x
  222.   goto loop
  223.   :end
  224.   halt
  225. }
  226. alias irckick {
  227.   set %person.nick $gettok(%var,1,32)
  228.   set %chan $gettok(%var,3,32)
  229.   set %chan %chan
  230.   set %kicked.nick $gettok(%var,4,32)
  231.   set %kicked.reason $gettok(%var,5-1000,32)
  232.   if %person.nick != %irc2.nick {
  233.     set %chan $gettok(%var,3,32)
  234.     set %kicked.nick $gettok(%var,4,32)
  235.     set %kicked.reason $gettok(%var,5-1000,32)
  236.     set %kicked.reason $remove(%kicked.reason,:)
  237.     set %person.nick $left(%person.nick,$pos(%person.nick,!,1))
  238.     set %person.nick $remove(%person.nick,!,:)
  239.     aline -p @ $+ %chan 3 $+ $timestamp *** %kicked.nick Was Kicked From %chan By %person.nick ( $+ %kicked.reason $+ )
  240.     set %wind.chan @ $+ %chan
  241.     set %person1.nick * $+ %kicked.nick
  242.     dline -l %wind.chan $fline(%wind.chan,%person1.nick,1,1)
  243.   }
  244.   if %kicked.nick == %irc2.nick {
  245.     window -c @ $+ %chan
  246.     set %person.host $gettok(%var,1,32)
  247.     set %person.host1 $left(%person.host,$pos(%person.host,!,1))
  248.     set %person.nick1 $left(%person.host,$pos(%person.host,!,1))
  249.     set %person.host2 $remove(%person.host,%person.nick1)
  250.     aline -p @Irc2 3 $+ $timestamp *** You were Kicked from %chan by %person.nick ( $+ %kicked.reason $+ )
  251.     aline @Irc2 12-
  252.   }
  253. }
  254. alias ircjoinchan {
  255.   set %chan $1
  256.   set %irc2.chan $gettok(%var,3,32)
  257.   set %irc2.chan $remove(%irc2.chan,:)
  258.   set %person.nick $gettok(%var,1,32)
  259.   set %person.nick $left(%person.nick,$pos(%person.nick,!,1))
  260.   set %person.nick $remove(%person.nick,!,:)
  261.   if %person.nick == %irc2.nick {
  262.     window -g1Sel10 @ $+ %chan
  263.     halt
  264.   }
  265.   set %chan $1
  266.   set %person.host $gettok(%var,1,32)
  267.   set %person.host1 $left(%person.host,$pos(%person.host,!,1))
  268.   set %person.nick1 $left(%person.host,$pos(%person.host,!,1))
  269.   set %person.host2 $remove(%person.host,%person.nick1)
  270.   aline -p @ $+ %chan 3 $+ $timestamp *** %person.nick ( $+ %person.host2 $+ ) Has Joined $1
  271.   aline -l @ $+ %chan %person.nick
  272.   set %chan. $+ %chan %chan. [ $+ [ %chan ] ] %person.nick
  273.   halt
  274. }
  275. alias ircpart {
  276.   set %person.nick $gettok(%var,1,32)
  277.   set %person.nick $left(%person.nick,$pos(%person.nick,!,1))
  278.   set %person.nick $remove(%person.nick,!,:)
  279.   set %chan $gettok(%var,3,32)
  280.   if %person.nick != %irc2.nick {
  281.     set %chan %chan
  282.     set %person.host $gettok(%var,1,32)
  283.     set %person.host1 $left(%person.host,$pos(%person.host,!,1))
  284.     set %person.nick1 $left(%person.host,$pos(%person.host,!,1))
  285.     set %person.host2 $remove(%person.host,%person.nick1)
  286.     set %person.nick1 * $+ %person.nick
  287.     aline -p @ $+ %chan 3 $+ $timestamp *** %person.nick ( $+ %person.host2 $+ ) Has Left %chan
  288.     set %wind.chan @ $+ %chan
  289.     dline -l %wind.chan $fline(%wind.chan,%person.nick1,1,1)
  290.     set %chan. $+ %wind.chan $remove(%chan [ $+ [ %wind.chan ] ],%person.nick)
  291.   }
  292.   if %person.nick == %irc2.nick {
  293.     unset %chan. $+ %chan
  294.   }
  295.   halt
  296. }
  297. alias listnicks {
  298.   set %all.nicks $2-
  299.   set %chan.list $1
  300.   set %chan. $+ %chan.list %all.nicks
  301.   set %all.nicks $remove(%all.nicks,:)
  302.   set %nick.x 1
  303.   :loop
  304.   set %nick.1 $gettok(%all.nicks,%nick.x,32)
  305.   if %nick.1 == $null {
  306.     goto end
  307.   }
  308.   aline -l @ $+ %chan.list %nick.1
  309.   inc %nick.x
  310.   goto loop
  311.   :end
  312. }
  313. alias rawcommand {
  314.   if 332 == $gettok(%var,2,32) {
  315.     set %topic $gettok(%var,5-1000,32)
  316.     aline -p @ $+ $gettok(%var,4,32) 3 $+ $timestamp Now Topic Is: ' $+ %topic $+ 3'
  317.     halt
  318.   }
  319.   if 333 == $gettok(%var,2,32) {
  320.     aline -p @ $+ $gettok(%var,4,32) 3 $+ $timestamp Set By: $gettok(%var,5,32)
  321.     halt
  322.   }
  323.   if 421 == $gettok(%var,2,32) {
  324.     $1-
  325.     halt
  326.   }
  327.   if 353 == $gettok(%var,2,32) {
  328.     listnicks $gettok(%var,5,32) $gettok(%var,6-10000,32)
  329.   }
  330.   set %rawtext $gettok(%var,4-10000,32)
  331.   if $chr(58) == $left(%rawtext,1) || $chr(61) == $left(%rawtext,1) {
  332.     set %rawtext $right(%rawtext,$calc($len(%rawtext) - 1))
  333.   }
  334.   if %rawtext == $null { halt }
  335.   aline -p @Irc2 %rawtext
  336.   aline @Irc2 12-
  337.   halt
  338. }
  339. alias connectnotice {
  340.   set %connect.notice $gettok(%var,4-1000,32)
  341.   aline @Irc2 5 $timestamp %server.name %connect.notice
  342.   aline @Irc2 12-
  343.   halt
  344. }
  345. alias ircchanmsg {
  346.   if $chr(35) isin $gettok(%var,3,32) {
  347.     set %chan $gettok(%var,3,32)
  348.     set %chan $remove(%chan,:)
  349.     set %said $gettok(%var,5-1000,32)
  350.     set %1word $gettok(%var,4,32)
  351.     %1word = $right(%1word,$calc($len(%1word) - 1))
  352.     set %irc2.nick.said $gettok(%var,1,32)
  353.     set %irc2.nick.said $left(%irc2.nick.said,$pos(%irc2.nick.said,!,1))
  354.     set %irc2.nick.said $remove(%irc2.nick.said,!,:)
  355.     if action isin %1word {
  356.       set %said $left(%said,$calc($len(%said) - 1))
  357.       aline -p @ $+ $gettok(%var,3,32) 12 $timestamp * %irc2.nick.said %said
  358.       halt
  359.     }
  360.     set %window @ $+ %chan
  361.     set %said %1word %said
  362.     if $window(%window,1) != $null {
  363.       aline -p %window $timestamp < $+ %irc2.nick.said $+ > %said
  364.     }
  365.   }
  366.   if $chr(35) !isin $gettok(%var,3,32) {
  367.     privchat
  368.   }
  369.   halt
  370. }
  371. alias privchat {
  372.   if $1 == $null {
  373.     set %query.nick $gettok(%var,1,32)
  374.     set %query.nick $left(%query.nick,$pos(%query.nick,!,1))
  375.     set %query.nick $remove(%query.nick,:,!)
  376.     set %chat.num 1
  377.     set %chat.tot.num $window(@C*,0)
  378.     :loop
  379.     if %chat.tot.num == 0 {
  380.       goto openchat
  381.     }
  382.     if $window(@C*,%chat.num) == @C [ $+ [ %query.nick ] ] {
  383.       goto end
  384.     }
  385.     inc %chat.num
  386.   }
  387.   if $1 != $null { 
  388.     set %query.nick $1
  389.     window -e @C $+ %query.nick
  390.     halt
  391.   }
  392.   :openchat
  393.   window -e @C $+ %query.nick
  394.   :end
  395.   set %whatwas.said $gettok(%var,4-1000,32)
  396.   set %whatwas.said $right(%whatwas.said,$calc($len(%whatwas.said) - 1))
  397.   aline -p @C $+ %query.nick $timestamp < $+ %query.nick $+ > %whatwas.said
  398. }
  399. on 1:input:@C*:{
  400.   if $left($1,1) == / {
  401.     irccommand $1-
  402.   }
  403.   set %talk.nick $active
  404.   set %talk.nick $remove(%talk.nick,@C)
  405.   sockwrite -n irc privmsg %talk.nick : $+ $1-
  406.   aline -p $active $timestamp < $+ %irc2.nick $+ > $1-
  407.   halt
  408. }
  409.  
  410.  
  411. Nick Password:/set %nspw $$?="Enter NickServ Password"